package top.infopub.mgr.mkt.service;

import java.util.List;

import top.infopub.generic.GenericService;
import top.infopub.mgr.mkt.domain.PreProjectDomain;
import top.infopub.mgr.mkt.domain.ProjectDomain;
import top.infopub.mgr.mkt.jsonvo.CollectJsonVo;
import top.infopub.mgr.mkt.vo.CollectProjectVo;
import top.infopub.mgr.mkt.vo.PreProjectVo;
import top.infopub.model.mkt.*;

import com.github.pagehelper.Page;
import top.infopub.security.vo.AuthorizationVO;

/**
 *
 * @author huangxiaolang
 * @version 2020年1月15日
 * @see PreProjectService
 * @since
 */
public interface PreProjectService extends GenericService<PreProject, String> {

    /**
     * 根据条件查询预立项记录
     * @param page
     * @param collectProjectVo
     * @return
     * @see
     */
    Page<ProjectDomain> selectPageByDomainWhere(Page<ProjectDomain> page, CollectProjectVo collectProjectVo);

    /**
     * 新增预立项
     * @param preProject 预立项
     * @param preProjectCoops 联合体单位
     * @param preProjectSubs 子项
     * @param fileAtts 附件
     * @see
     */
    void addPreProject(PreProject preProject, List<PreProjectCoop> preProjectCoops,
                       List<PreProjectSub> preProjectSubs, List<PreProjectAtt> fileAtts);

    /**
     * 编辑预立项
     * @param preProject
     * @param preProjectCoops
     * @param preProjectSubs
     * @param fileAtts
     * @param submitType
     */
    void editPreProject(PreProject preProject, List<PreProjectCoop> preProjectCoops,
                       List<PreProjectSub> preProjectSubs, List<PreProjectAtt> fileAtts,String submitType);

    /**
     * 根据id查询预立项详情
     * @param id 主键id
     * @return
     * @see
     */
    PreProjectVo selectById(String id);

    /**
     * 根据条件查询预立项-我审批的记录
     * @param page
     * @param preProjectVo
     * @return
     * @see
     */
    Page<PreProjectDomain> selectMyCheckByDomainWhere(Page<PreProjectDomain> page,
                                                      PreProjectVo preProjectVo);

    /**
     * 查询可立项的预立项记录
     * @return
     * @see
     */
    List<PreProject> selectUsableSetupPreProject();

    /**
     * 查询审批完成的预立项记录
     * @return
     * @see
     */
    List<PreProject> selectPreProject(String proCode);

    /**
     * 根据项目Id查询预立项和城市调研信息
     */
    PreProjectDomain queryByProCode(String proCodes);


    /**
     * 选取账户为营销经理的审批完成的预立项记录
     * @param proCode
     * @param hrStaffMktId
     * @return
     * @see
     */
    List<PreProject> getPreProjectWithStaff(String proCode,String hrStaffMktId);

    /**
     * 查询未绑定公司的项目记录（processStatus = '9'）
     * @return
     * @see
     */
    List<PreProject> selectNotBindOrg();

    /**
     * 查询项目名称是否重复（processStatus in('1','9')）
     * @param proName 项目名称
     * @return
     * @see
     */
    List<PreProject> selectByProName(String proName);

//    PreProject selectByProCode1(String proCode);

    List<PreProject> selectByProCode(String proCode);

    CollectJsonVo queryDetailById(String id);

//    void saveAll(ProjectInfo projectInfo, PreProject preProject, List<AfterSummaryCoop> summary, ProjectSubInfo proSubInfo, List<ProjectRisk> riskList, List<ProjectAttachment> attachmentList, AuthorizationVO userDtl);
}
